Targeted network discovery and visualizations

ABSTRACT

Systems and methods for generating a graphical user interface representation of a network topology using discovery parameters. An example method includes receiving, from a client, user input requesting the graphical user interface representation of the network topology. Discovery parameters for discovering a plurality of nodes in the network may be determined from the user input. First network configuration information may be retrieved from the first node determined from discovery parameters. The configuration information may describe a first subset of the plurality of nodes connected to the first node. A second node may be identified from the first subset. Second network configuration information may be retrieved from the second node, which describes a second subset of the plurality of nodes connected to the second node. The graphical user interface representation may be generated from the network configuration information.

TECHNICAL FIELD

The present disclosure is generally related to discovery of networkconfiguration values for networked devices, and is more specificallyrelated to a targeted discovery of specific network devices in a networkand visualization of the network using discovery parameters.

BACKGROUND

Data centers may include networked devices within a defined network. Thenetworked devices are each configured based on specific networkconfigurations in order to communicate with each other and provide adistributed service. Configuration options of the networked devicesshould agree with each other in order to provide adequate service.Mistakes in configuration properties of networked devices may lead toerrors and data traffic may flow in unexpected and undesirable ways.

BRIEF DESCRIPTION OF THE DRAWINGS

The disclosure is illustrated by way of examples, and not by way oflimitation, and may be more fully understood with references to thefollowing detailed description when considered in connection with thefigures, in which:

FIG. 1 depicts a high-level diagram of an example system architectureoperating in accordance with one or more aspects of the presentdisclosure.

FIG. 2 depicts a flow diagram of an example method for identifying nodesfrom a plurality of nodes in a network that match discovery parametersand generating a graphical user interface representation of a topologyof the network of identified nodes, in accordance with one or moreaspects of the present disclosure.

FIG. 3A depicts an illustrative example of discovering networkconfiguration information from nodes, starting at a first node, inaccordance with one or more aspects of the present disclosure.

FIG. 3B depicts illustrative examples of subsets of nodes that havecommon configuration values represented with visual indicatorsindicating the subsets of nodes, in accordance with one or more aspectsof the present disclosure.

FIG. 4 depicts a flow diagram of an example method for receiving userinput specifying a change in a view of a displayed graphical userinterface representation of the network topology, in accordance with oneor more aspects of the present disclosure.

FIG. 5 depicts a block diagram of an illustrative computing deviceoperating in accordance with the examples of the disclosure.

DETAILED DESCRIPTION

Described herein are system and methods for generating a graphical userinterface representation of a topology of a network that includes nodesselectively discovered based upon discovery parameter input. Thegraphical user interface (GUI) representation of the topology of thenetwork may include visual indicators identifying nodes that sharecommon network configuration values.

In an illustrative example, a network may include a set of nodes(networked devices). A networked device may represent any computingdevice configured to communicate with other devices through a networkconnection. Examples of networked devices include, but are not limitedto, server computers, client computers, routers, switches, Ethernethubs, bridges, repeaters, or any other computing device capable ofconnecting and communicating over a network. Generating a visualrepresentation of a network topology is a tedious process that may besusceptible to errors that may lead to configuration mistakes whenupdating the networking service. In order for an engineer tosuccessfully configure nodes in the network, the engineer needs to makesure that configuration values between the nodes are correct in order toensure accurate representation of communication between devices. Hownodes are connected may determine which values should match in order toprovide distributed services throughout the network. If for example,layer 2 virtual local area network (VLAN) configurations are notaccurate then the configuration of networking traffic flow within theVLAN may cause errors in unexpected and undesirable ways.

Conventionally, network engineers may use a spreadsheet to keep track ofconfigurations values for nodes. However, as network systems becomelarger and more complex, manually maintaining spreadsheets may becometoo complex and may lead to errors in reading and/or translating thespreadsheet when configuring nodes. User interfaces have been developedto aid network engineers by providing a visual representation of thenetwork including configuration values for nodes based on theirspreadsheets. However, visual interfaces that are based on configurationspreadsheets will still suffer from potential errors related toconfiguration mistakes made within the spreadsheets.

Network discovery applications may help to reduce errors related toconfiguration mistakes within spreadsheets by discovering configurationvalues from nodes within the network. However, if a network includeshundreds or even thousands of nodes then discovery of configurationvalues of each node may require extensive processing resources and time.Additionally, displaying discovered configuration values for a largenumber of nodes may result in a user interface that displays too manyconfiguration values for nodes and as a result is difficult to read by anetwork engineer. User interfaces for the network may be configured todisplay only a limited amount of configuration information for eachnode. However when troubleshooting a network issue, if the display onlydisplays a limited amount of data for each node, then the display maynot convey to the network engineer any potential configurationmismatches that may be causing the network issue. Therefore a GUIrepresentation of the network topology that displays a requested levelof detail is desirable.

Accordingly, aspects of the present disclosure address the above andother deficiencies by generating a GUI representation of a portion ofthe network and providing visual indicators that indicate configurationvalues for enabled network services and/or network protocols fordiscovered nodes within the portion of the network displayed. Aspects ofthe present disclosure include performing a selective discovery of a setof nodes determined from discovery parameters provided by a user.Discovery parameters may define a node of interest from which networkdiscovery is to be initiated. By defining the node of interest, thesystem may ensure that node discovery begins at the node of interest andtargets neighboring nodes to the node of interest.

In an implementation, discovery parameters may specify discovery ofnodes based on device type. For example, if the discovery parametersspecify that only nodes that are routers are to be discovered, thendevices such as servers, end-user computers, switches, and hubs may beomitted from a GUI representation of the targeted discovery. Thediscovery process may use less computing resources by omitting discoveryof devices that the engineer is not interested in viewing.

In an implementation, the discovery parameters may define discoveringnodes based on their assigned function. For instance, the engineer maybe interested in viewing a network topology of routers assigned tofunction as core routers. A core router is a router configured to routebulk traffic between other routers. In contrast, an edge router is arouter configured to connect end user devices, such as laptops,desktops, or servers, to the network. By targeting discovery of nodesthat are assigned a specific function, the discovery process may consumeless processing resources that would otherwise be used to discover typesof devices not specifically requested for discovery.

In an implementation, the discovery parameters may define a maximum hopcount from a starting node. The starting node may represent the firstnode discovered during the discovery process. A hop is defined as aportion of a path between a starting node and a destination node. Whensending network packets from a starting node to a destination node, thepackets may pass through a series of intermediate nodes before reachingthe destination node.

Each time a packet passes through an intermediate node, a hop isidentified. A hop count refers to the number of intermediate nodesthrough which data will pass between the starting node and thedestination node. In this context, discovery parameters may define amaximum hop count for discovery. The maximum hop count may refer to thenumber of neighboring nodes along a network path that may be discoveredbefore the discovery process terminates. If the discovery parametersspecify a hop count of two, then the discovery process may discoverdirectly neighboring nodes from the starting node (first hop) and maydiscover additional nodes that directly neighbor the nodes that neighborthe starting node (second hop). For example, if the discovery parametersspecify a maximum hop count of two and a starting node, labeled node A,then the discovery process may discover a first set of nodes (nodes B,C, and D) that directly neighbor node A, as the 1^(st) hop. Thediscovery process may then discover a second set of nodes (node X, Y, Z)that directly neighbor node B, as the 2^(nd) hop with respect to node A.The maximum hop count in discovery parameters may be used to limitdiscovery to a set of neighboring nodes that are within a specifiednumber of hops.

A management server may perform discovery of one or more nodes in thenetwork using the specified discovery parameters. In an implementation,a management server may receive a discovery request, including discoveryparameters, from a user of a user device and may connect to one or morenodes to retrieve configuration values from the one or more nodes basedupon the discovery parameters. For example, the management server mayreceive a discovery request that defines a starting node from whichdiscovery is to be initiated. The management server may identify thestarting node from the discovery parameters and may establish aconnection to the starting node. For instance, the management server mayestablish a secure socket shell (SSH) connection to the starting node.Upon establishing the connection between the management server and thestarting node, the management server may retrieve network configurationinformation that may describe physical connections between the startingnode and one or more directly neighboring nodes, enabled networkservices and protocols on the starting node, and network routinginformation for the enabled services/protocols.

In an implementation, the management server may retrieve physicalconnection information describing physical connections between thestarting node, referred to as the first node, and directly neighboringnodes. For example, physical connection information may includecommunication endpoint identifiers such as IPv4 and IPv6 addresses,media access control address (MAC) identifiers, or any other networkidentifier used to identify directly neighboring nodes. Uponestablishing a connection between the management server and the firstnode, the management server may execute a link layer discovery protocol(LLDP) neighbor command on the first node, such as “show lldp neighborsdetail” to retrieve information about directly neighboring nodes. Theoutput of the LLDP neighbor command may include neighboring nodeinformation such as, network address, device name, port connectioninformation, among others. In another example, the management server mayexecute an address resolution protocol (ARP) command to retrievereachable network addresses for neighboring nodes. For instance, themanagement server may connect to the first node via SSH and may executeon the first node a “show interfaces” command to discover which networkaddresses for devices are directly connected to interfaces of the firstnode. The management server may then execute an ICMP scan on thediscovered network addresses to determine which network addresses map tolive devices. The management server may then execute on the first node ashow ARP command, such as “show arp|no-match incomplete” to return alist of reachable network addresses for neighboring nodes from the ARPtable. The neighboring node information may then be used to establishconnections to the neighboring nodes in order to discover networkconfiguration information for the neighboring nodes as well asdetermining additional nodes to discover that are within the maximum hopcount specified by the discovery parameters.

In an implementation, the management server may retrieve networkconfiguration information that specifies enabled network services andnetwork protocols for the first node and neighboring nodes. For example,upon establishing a connection between the management server and thefirst node, the management server may retrieve static configurationinformation from the first node that defines configuration values ofinstalled network services. Retrieving static network configurationinformation may include accessing a configuration file from a networkrouter. The startup-config file may define settings for configuringenabled network protocols for the first node upon startup. In anotherexample, the management server may retrieve ephemeral state informationthat may describe routes between nodes that network traffic may follow.For example, the management server may execute commands on the firstnode to query a Routing Information Base (RIB) or a routing table inorder to retrieve network paths for routing protocols such as OpenShortest Path First (OSPF) or Border Gateway Protocol (BGP). Networkpaths may include lists of routes to particular network destinations.

In an implementation, the management server may be configured toidentify, from the network configuration information retrieved from thefirst node, property values of one or more neighboring nodes that matchthe discovery parameters. For example, the network configurationinformation retrieved from the first node may indicate a set ofneighboring nodes that includes switch-1, switch-2, and server-1. Thediscovery parameters may specify that only switches are to bediscovered. As a result, the management server may identify switch-1 andswitch-2 as nodes of interest and may establish connections to switch-1and switch-2 to discover their respective network configuration values.For example, the management server may establish an SSH connection toswitch-1 and retrieve network configuration information from switch-1.The network configuration information from switch-1 may includeconfiguration information for identifying nodes that neighbor switch-1.The management server may then identify, from the network configurationinformation retrieved from switch-1, any additional nodes that match thediscover parameters. If additional nodes match the discovery parameters,then management server may establish connections to the additional nodesand retrieve additional network configuration information from theadditional nodes.

In an implementation, the management server may store information aboutdiscovered nodes and their respective network configuration informationin an attached data store. The management server may identifyrelationships, based upon common configuration values, betweendiscovered nodes using the stored network configuration information andmay generate a graphical representation of a portion of the network thatincludes the discovered nodes. The management server may cache thenetwork configuration information within the data store. Cached networkconfiguration information may then be retrieved at a later time by themanagement server for identifying relationships between nodes andgenerating the graphical representation of the portion of the network.Cached network configuration information may be deleted after a periodof time as the network configuration information, such as ephemeralstate information, may change and the cached data may become out of dateafter a period.

In an implementation, the discovery steps of retrieving networkconfiguration information and identifying configuration values ofneighboring nodes that match the discovery parameters may be repeatedfor each node identified that satisfies the discovery parameters untilthere are no new nodes to be discovered. For example, the discoveryparameters may specify a maximum hop count, which defines the number ofhops from the starting node to be discovered. The management server maycease discovery of neighboring nodes once the maximum number of hopsfrom the first node has been satisfied. In another example themanagement server cease discovery of neighboring nodes when networkconfiguration information retrieved from a node does not include anypreviously unidentified nodes. For instance, if neighboring nodesidentified, from the network configuration information, are nodes thathave already been identified or do not match the discovery parametersthen the management server may cease discovery of nodes.

In an implementation, the management server may identify relationshipsbetween discovered nodes based upon configuration values that are commonbetween the discovered nodes. For example, the management server mayidentify a subset of nodes that belong to the same LAN based upon theirIP addresses and netmask. In other examples nodes having the same VLANID may be identified as being part of a subset of nodes. In yet anotherexample, the management server may identify a subset of nodes thatsupport Open Shortest Path First (OSPF) protocol based upon networkconfiguration information retrieved from each of the nodes in the set ofdiscovered nodes. For instance, during discovery the management servermay execute a “show ip ospf data” command on a node to determineneighboring nodes and their corresponding OSPF area. The managementserver may identify a subset of nodes that belong to a particular OSPFarea. The management server may identify one or more subsets of nodesbased upon one or more network configuration values.

In an implementation, the management server may generate a graphicaluser interface (GUI) representation of a network topology that includesthe set of discovered nodes. The GUI representation of the networktopology may comprise the set of discovered nodes, interconnectivitybetween each of the discovered nodes based on configuration information,and visual features that represent common network configuration valuesfor the identified subset of nodes. The GUI representation may includedisplays of network configuration information for the discovered nodes.For instance, the GUI representation may display IP addresses under eachnode icon. Additionally, each node may be displayed as a specific iconthat may represent the type of device or function assigned to the node.For example, a node that is a server may be displayed using an icon thatlooks like a server. Whereas a node that represents a router may bydisplayed using a different icon that looks like a router. In otherexamples, icons may be specific to the type of function assigned to thenode, such as a core router may have a specific icon that is distinctfrom the icon that represents an edge router. This distinction may bebased on shape, color, or text that is displayed within or directly nextto the icon.

In an implementation, the GUI representation of the network topology mayinclude a data structure, such as XML or any other conventional datamodel, that includes elements representing each of the discovered nodesand attributes representing network configuration properties for eachdiscovered node. The management server may send the GUI representationof the network topology to the client device for display. The clientdevice may represent any end-user computing device, such as a desktop,laptop, tablet, or smartphone, capable of receiving and displaying theGUI representation on a display. The client device may be configured toreceive user input for manipulating the GUI representation displayed. Inan implementation, the client device may be configured with aninteractive GUI display that displays the GUI representation of thenetwork topology and display options for manipulating the displayedrepresentation. The display options may include display filtersconfigured to show or hide configuration information on the networktopology. For example, display filters may include filters to show orhide connection lines between nodes at the physical and/or data linklayer, groups of nodes that are part of a network layer based on RoutingInformation protocol (RIP) or OSPF, or configuration information such asIP addresses assigned to each of the nodes.

In an implementation, network configuration values for each discoverednode may be categorized based upon a specific Open SystemsInterconnection (OSI) layer. For instance, nodes that have subnetaddresses associated with an OSI layer 2 VLAN may be annotated as an OSIlayer 2 VLAN. The client device GUI may be configured with displayfilters that may toggle display of configuration values associated witha particular OSI layer.

The client device may be configured to receive user input that updatesthe discovery parameters for the purpose of requesting an updated GUIrepresentation from the management server. User input may includechanges to the view of the GUI representation, such as zooming in orout, panning left or right, or scrolling vertically. In animplementation, the client device may receive the user input tomanipulate the display of the GUI representation and may transmit theuser input to the management server in order to update the set of nodesdisplayed within the GUI representation. The management server mayreceive the user input and may determine updated discovery parametersbased upon the user input.

In an implementation, the management server may determine updateddiscovery parameters including, but not limited to, an updated firstnode, an updated hop distance, and/or updated device types and devicefunctions from the user input received from the client device. Forexample, if the user input indicates panning the view to the right, themanagement server may determine a third node for discovery based upon anode that is closest to the center of the GUI display on the clientdevice after the user input. In another example, the client device maybe configured to determine which node is closest to the center and mayspecify the third node in the user input sent to the management server.Upon determining the updated first node (starting node), the managementserver may initiate updated discovery of nodes starting at the updatedfirst node.

In an implementation, the management server may determine an updated hopdistance for node discovery using the user input. For example, if theuser input indicates that the user zoomed out, then the managementserver may determine that the hop distance for discovering additionalneighboring nodes has increased from two hops to three hops, where twohops were used to discover nodes for the currently presented GUIrepresentation of the network topology. The hop distance may bedetermined from a change in zoom value. For instance, the user input mayindicate a change in zoom, either zooming in by a certain amount orzooming out by a certain amount, which may be used by the managementserver to determine whether to update the hop distance value from thepreviously used hop distance value used to generate the currentlypresented GUI representation.

In an implementation, the management server may use changes in zoomlevel from the user input to update the amount of detail displayedwithin the GUI representation of the network topology for each node. Forexample, if the user input indicates that the zoom level is fully zoomedout, then the management server may be configured to display, within theGUI representation, node details such as device names and device typesfor physical layer details and higher level network protocol detailssuch as, OSPF area numbers or Border Gateway Protocol (BGP) autonomoussystem numbers. If the user input indicates a partially zoomed in levelthen the management server may be configured to display physical layerdetails such as LLDP links and interface names for interfaces on nodes,data link layer details such as enabled link layer protocols and VLANsenabled on links and interfaces, and network layer details such asinterface IP addresses and OSPF/BGP adjacency states. If the user inputindicates a fully zoomed in level then the management server may beconfigured to display physical level details including the physicaltypes (electrical, optical, or wireless) of links and interfaces,hardware part numbers for nodes, hardware status, and transmission modesfor each link. Data link layer details that may be displayed by themanagement server when fully zoomed in may include frame counters,framer counters for each VLAN, and MAC table entries. Network layerdetails that may be displayed by the management server when fully zoomedin may include routing table entries and access control lists.

In an implementation, the management server may identify a third nodefrom the updated discovery parameters in the user input received fromthe client device. The management server may then retrieve networkconfiguration information from the third node. In an implementation, themanagement server may be configured to check the data store for cachednetwork configuration information associated with the third node. Forexample, if configuration information was previously retrieved from thethird node and stored in the data store during the previous round ofdiscovery, then the management server may access the cached networkconfiguration information for the purpose of generating an updated GUIrepresentation of the network topology. As described, cached networkconfiguration information may be valid for a limited amount of time. Ifthe management server determines that the data store does not containnetwork configuration information for the third node or that the cachednetwork configuration information is out of date, then the managementserver may retrieve the network configuration information from the thirdnode by establishing a connection to the third node to retrieve thenetwork configuration information.

In an implementation, the management server may retrieve networkconfiguration information from neighboring nodes of the third node inthe same manner as described above. The management server may retrievenetwork configuration information from a set of discovered nodes definedby the discovery parameters. The management server may then identifyfrom the set of discovered nodes, a subset of nodes that have one ormore common network configuration values, such as belonging to a commonVLAN or supporting OSPF or BGP protocols. The management server maygenerate an updated GUI representation of the network topology thatrepresents the set of discovered nodes based upon discovery parametersupdated by the received user input. In an implementation, the managementserver may send the updated GUI representation to the client device fordisplay.

Accordingly, aspects of the present disclosure may significantly reduceprocessing time and computing resources used during network discovery byselectively discovering network configuration values for nodes thatmatch provided discovery parameters. Additionally, configuration errorsattributed to manually maintained network configurations of nodes orattributed to network topology displays that are either too detailed ornot detailed enough, may be reduced by generating a GUI representationof a portion of the network topology that is based upon the provideddiscovery parameters. Network downtimes may be reduced by providingaccurate configuration information within a network topology display. Byselectively displaying desired nodes and their property values, networkdevices may remain online during configuration updates, therebyincreasing network availability and reliability.

FIG. 1 illustrates an example system architecture 100 in whichimplementations of the disclosure may operate. The system architecture100 may include management server 110, client device 120, data store130, and a collection of nodes 140. Each of the management server 110,the client device 120, the data store 130, and the collection of nodes140 are communicatively coupled via network 150. Although one clientdevice 120 is shown, it should be understood that any suitable number ofclient devices may be included in the system architecture 100 and theother client devices may include similar components and features asclient device 120. The network 150 may be a public network (e.g., theInternet), a private network (e.g., a LAN of wide area network (WAN)),or a combination thereof. Network 150 may include a wirelessinfrastructure, which may be provided by one or more wirelesscommunication systems, such as a wireless fidelity (WiFi) hotspotconnected with the network 150 and/or a wireless carrier system that canbe implemented using various data processing equipment, communicationtowers, etc. Additionally or alternatively, network 150 may include awired infrastructure (e.g., Ethernet).

The management server 110 may comprise one or more processorscommunicatively coupled to memory devices and input/output (I/O)devices. The management server 110 may include application 112.Application 112 may include logic implemented as computer instructionsstored in one or more memories and executed by one or more processingdevices of the management server 110. Application 112 may include logicfor managing visualizations of portions of a network topology.Application 112 may include a discovery parameter identificationcomponent 114, a node management component 116, and a topologymanagement component 118. The discovery parameter identificationcomponent 114 may include logic to receive and identify discoveryparameters that may define the starting point for the discovery process,which types of nodes are to be discovered, the type of configurationinformation to be discovered, and the scope for discovering neighboringnodes using a maximum hop count.

Node management component 116 may include logic to manage a plurality ofnodes that represent networked devices within a network. The nodemanagement component 116 may include logic to retrieve and storeconfiguration properties for discovered nodes and to identify additionalnodes for discovery.

The topology management component 118 may include logic to identifyrelationships between discovered nodes based upon common networkconfiguration values and to generate a GUI representation of a networktopology of the discovered nodes. For example, the topology managementcomponent 118 may identify a subset of discovered nodes that belong tothe same VLAN. The topology management component 118 may generate theGUI representation of the network topology for the discovered nodes,which may include visual indicators that highlight each node of thesubset of discovered nodes that belong to the identified VLAN.

The client device 120 may represent various computing devices such aspersonal computers (PCs), laptops, mobile phones, smart phones, tabletcomputers, network connected televisions, netbook computers etc. In someimplementations, client device 120 may also be referred to as a “userdevice.” The client device 120 may include client application 122.Client application 122 may include logic implemented as computerinstructions stored in one or more memories and executed by one or moreprocessing devices of the client device 120. Client application 122 mayinclude a graphical user interface 128. The graphical user interface 128may include logic to display the GUI representation of the networktopology from the management server 110. The graphical user interface128 may be configured to receive user input that may specify one or morechanges to the network topology. User input may modify the zoom and/orposition of the GUI representation in order to trigger a modificationrequest to be sent to the management server 110.

In an implementation, the data store 130 may store network configurationinformation for each of the nodes discovered by the management server110. The management server 110 may retrieve the network configurationinformation from the data store 130. The data store 130 may be a memory(e.g., random access memory), a cache, a drive (e.g., a hard drive), aflash drive, a database system, or another type of component or devicecapable of storing data. The data store 130 may also include multiplestorage components (e.g., multiple drives or multiple databases) thatmay also span multiple computing devices (e.g., multiple servercomputers). In an implementation, the collection of nodes 140 mayrepresent the one or more networked devices within the network.

FIG. 2 depicts a flow diagram of an example method for identifying nodesfrom a plurality of nodes in a network that match discovery parametersand generating a GUI representation of a topology of the network ofidentified nodes, in accordance with one or more aspects of the presentdisclosure. The method may be performed by processing logic that maycomprise hardware (circuitry, dedicated logic, etc.), computer readableinstructions (run on a general purpose computer system or a dedicatedmachine), or a combination of both. In one illustrative example, method200 may be performed by application 112 of the management server 110.Alternatively, some or all of method 200 might be performed by othermodules or machines.

At block 202, processing logic may receive, from a client device, userinput requesting a GUI representation of a topology of a network. In animplementation, the discovery parameter identification component 114 ofapplication 112 may receive, from the client device 120, user inputspecifying a request for the GUI representation of the topology of thenetwork. The user input may specify parameters to be used to determinewhich nodes in the network are to be displayed within the GUIrepresentation. The parameters may be discovery parameters fordiscovering configuration information of nodes in a network.

At block 205, processing logic may determine discovery parameters fordiscovering configuration information for the plurality of nodes in thenetwork. In an implementation, the discovery parameter identificationcomponent 114 may receive, from the client device 120, the discoveryparameters defining a first node for discovery and parameters specifyingwhich types of nodes are to be discovered. For example, the discoveryparameters may include device type information identifying specifictypes of nodes, such as routers, switches, servers, or any otherspecific networked device. Additionally, the discovery parameters mayinclude model numbers or a set of model numbers to discover. Forinstance, the discovery parameters may specify that only Cisco® 4000series routers are to be discovered. In other examples, the discoveryparameters may specify types of nodes based upon their functions. Forexample, the discovery parameters may specify that only core routers,which are routers that route traffic between other routers, are to bediscovered. In an implementation, the discovery parameters may includeparameters defining a maximum hop count for the discovery process. Asdescribed, the maximum hop count may refer to the number of directlyneighboring nodes along a network path, starting at a first node, whichmay be discovered before the discovery process terminates.

At block 210, processing logic may identify a node for retrievingnetwork configuration information. In an implementation, the discoveryparameter identification component 114 may identify a first node fromthe discovery parameters as a starting point for discovery. For example,if the management server 110 received a discovery request from theclient device 120 that included discovery parameters, then in responseto receiving the request, the discovery parameter identificationcomponent 114 may parse the received discovery parameters to identifythe first node from the discovery parameters in the received request.

At block 215, processing logic may retrieve network configurationinformation of a part of the network from the identified node. In animplementation, the node management component 114 may retrieve networkconfiguration information from the identified node by establishing aconnection to the node and executing one or more commands on the node toaccess the network configuration information. FIG. 3A depicts andillustrative example of discovering network configuration informationfrom nodes, starting at the first node. Diagram 302 represents thediscovery process starting with the first node, node 312, which wasidentified from the discovery parameters. In an example, the nodemanagement component 116 may connect to node 312 using credentialssupplied in the discovery parameters. In another example, theapplication 112 may have previously stored login credentials within thedata store 130. The node management component 116 may connect and loginto node 312 using SSH or any other network protocol for establishing aconnection with node 312. Upon establishing a connection, the nodemanagement component 116 may execute commands to discover networkconfiguration information about node 312. For example, the nodemanagement component 116 may execute a “show lldp neighbors detail”command that returns as output the directly connected neighbors. Thenode management component 116 may save to the data store 130 the outputfrom the lldp command as network configuration information for node 312.In another example, the node management component 116 may executecommands to access configuration information from configuration files,residing on node 312, to retrieve static network configurationinformation pertaining to one or more services and/or protocols enabledon node 312. In yet another example, the node management component 116may execute query commands to retrieve current state information, suchas network path information for OSPF or BGP protocols from a routingtable or RIB. In an implementation, the retrieved network configurationinformation for each node may be stored within the data store 130. Forexample, generated data objects for each discovered node may containattributes for each of the configuration values retrieved. In otherexamples, the data store 130 may implement a relational database withone or more tables storing information related to each discovered node.The stored network configuration information may be used whenidentifying common network configuration values between discovered nodesand for generating the GUI representation of the topology of thenetwork.

At decision block 220, processing logic may determine whether theadditional nodes are to be discovered based upon the discoveryparameters. If the discovery parameters for device type and maximum hopcount have been satisfied then processing logic may proceed to the phaseof identifying nodes with common configuration values and generating aGUI representation of the network topology. In an implementation, thenode management component 116 may determine that no additional nodes areto be discovered if the neighboring nodes identified from the retrievednetwork configuration information do not match the discovery parameters.For instance, if the discovery parameters specify that only routers areto be identified and the neighboring nodes to node 312 only includeservers, personal computers, or networked devices other than routers,then the node management component 116 may conclude no additional nodesare to be discovered. Processing logic may then proceed to block 225 toidentify subsets of discovered nodes that have common networkconfiguration values. In another example, the node management component116 may determine that no additional nodes are to be discovered if themaximum hop count from the discovery parameters has been reached. Forexample, if the maximum hop count is two and the current round ofdiscovered nodes is two hops from the first node, then the nodemanagement component 116 may determine that no additional nodes are tobe discovered.

If however, at decision block 220 processing logic determines thatadditional nodes are to be discovered, then the processing deviceproceeds to block 210 to identify a neighboring node for retrievingnetwork configuration information. In an implementation, the nodemanagement component 116 may determine that additional nodes are to bediscovered by determining that the maximum hop count has not beenreached and by determining that neighboring nodes connected to thecurrent node (node 312) match the discovery parameters.

Referring to block 210, the node management component 116 may identify anode from the retrieved network configuration information of node 312.For example referring to diagram 304 of FIG. 3, the node managementcomponent 116 may determine that the set of nodes 314, 316, and 318 eachmatch the discovery parameters. The node management component 116 maythen identify, for example, node 314 for retrieving networkconfiguration information. At block 215, the node management component116 may establish a connection to node 314 and retrieve networkconfiguration information from node 314. At decision block 220, the nodemanagement component 116 may determine whether there are additionalnodes to be discovered based on the discovery parameters and the networkconfiguration information retrieved from node 314 as well as networkconfiguration information from node 312. For example, the nodemanagement component 116 may determine that there are additional nodesconnected to the node 314 that matches the discovery parameters. In thiscase, the node management component 116 may proceed back to block 210 toidentify an additional node, such as node 324 depicted in diagram 306,and retrieve network configuration information for the node 324. Inanother example, the node management component 116 may also determinewhether there are remaining neighbor nodes connected to node 312 thatmatch the discovery parameters. Diagram 304 depicts that node 316 andnode 318 are both directly connected to node 312 and match the discoveryparameters. As such, the node management component 116 may then iteratethrough blocks 210-220 until all neighboring nodes that match thediscovery parameters are identified and network configurationinformation for each identified node is retrieved.

Referring to diagram 306 and diagram 308, additional nodes that neighbornodes 314, 316, and 318 may be discovered and network configurationinformation for each may be retrieved. Diagram 308 depicts theadditional neighbor nodes that match the discovery parameters. The setof discovered nodes depicted include nodes (312, 314, 316, 318, 324,326, 328, 338, and 339). Upon retrieving network configurationinformation for nodes that match the discovery parameters, at decisionblock 220 the processing device may determine that there are noadditional nodes to discover and may proceed to block 225.

At block 225, processing logic may identify a subset of nodes that haveone or more common network configuration values. In an implementation,the topology management component 118 may access the networkconfiguration information for each of the discovered nodes from the datastore 130 to determine relationships between nodes based on networkprotocols or enabled services. For example, the topology managementcomponent 118 may access the network addresses and subnet masks fordiscovered nodes to determine which nodes belong to the same VLAN. FIG.3B depicts an illustrative example of subsets of nodes that have commonconfiguration values represented with visual indicators indicating thesubsets of nodes. Diagram 340 illustrates an example of two subsets ofnodes that belong to two different VLANs. In diagram 340 nodes 312, 316,326, 318, 328, and 339 belong to VLAN 342 and nodes 312, 314, 324, 318,328, and 338 belong to VLAN 344.

In another example, the topology management component 118 may read fromrouting table information identifiers of nodes that make up a networkpath for packets to be routed from one node to another node. Diagram 350illustrates network paths 352, 354, and 356 that contain specific nodesbased upon routing table information retrieved from the discoverednodes. For instance, network path 352 includes nodes 326, 316, 312, 314,and 324. Network path 354 includes nodes 326, 316, 312, 318, 328, and339. Network path 356 includes nodes 324, 314, 312, 318, 328, and 338.In yet other examples, the topology management component 118 maydetermine other relationships, not displayed in diagrams 340 and 350,based upon other network configuration information. Implementations ofdetermining relationships between nodes based on network protocols orenabled services are not limited to determining VLANs and network pathsbased on routing table information. The topology management component118 may determine relationships between nodes based upon several otherproperties including, but not limited to, physical connections, OSPF,BGP, virtual routing and forwarding instances (VRFs), determiningnetwork paths based on tunneling/port forwarding, and any other servicesor network protocols.

At block 230, processing logic may generate a GUI representation of thetopology of the network that includes the plurality of discovered nodesand visual features representing the subset of nodes that have one ormore common network configuration values. In an implementation, thetopology management component 118 may generate the GUI representation ofthe topology of the network for the discovered nodes. The GUIrepresentation of the topology may represent the discovered nodes asicons with text identifiers identifying the nodes using an assigned nodename, MAC address, IP address, device type, or any other configurableidentifier. The icons for the nodes may be specifically shaped orcolored based upon the type of device or an assigned role for eachdevice. For example, switches may be shaped as small switch icons, whileservers may be shaped like small server racks.

In an implementation, the GUI representation may include visual featuresidentifying nodes that belong to an identified subset, such as byhighlighting nodes that belong to the same VLAN or overlaying a coloredline to identify nodes belonging to a specific network path. Diagrams340 and 350 of FIG. 3B illustrate examples of visual indicators used toidentify subsets of nodes that have common network configuration valueswithin the GUI representation. Diagram 340 displays an example of visualindicators highlighting nodes within VLAN 342 and VLAN 344. Diagram 350displays an example of visual indicators as bolded lines that overlapnodes that belong to a specific network path based upon routing data.

In an implementation, application 112 may be configured to send the GUIrepresentation of the network topology to the client device 120 fordisplay on a display screen coupled to the client device 120. FIG. 4depicts a flow diagram of an example method for receiving user inputspecifying a change in the view of the displayed GUI representation ofthe network topology, in accordance with one or more aspects of thepresent disclosure. The method may be performed by processing logic thatmay comprise hardware (circuitry, dedicated logic, etc.), computerreadable instructions (run on a general purpose computer system or adedicated machine), or a combination of both. In one illustrativeexample, method 400 may be performed by application 112 of themanagement server 110. Alternatively, some or all of method 400 might beperformed by other modules or machines.

At block 402, processing logic may send the GUI representation of thenetwork topology to a client device. In an implementation, theapplication 112 may send the GUI representation of the network topology,generated by the topology management component 118, to the client device120 for display within a graphical user interface of the client device120.

The client device 120 may receive the GUI representation of the networktopology and may display the topology in the client application 122. Theclient application 122 may implement a graphical user interface 128 fordisplaying the GUI representation of the network topology. The graphicaluser interface 128 may be configured to provide selectable filtercontrols configured to modify the display of the visual indicatorsassociated with the GUI representation of the network topology. Forexample, the filters may toggle VLAN indicators or network pathindicators to remove or display the detected VLANs or the network pathsfrom view.

FIG. 3B depicts an example of the GUI representation as it would bedisplayed within the graphical user interface 128 if the VLANs filterhas been selected by a user. Within diagram 340, VLAN 344 may display ahighlighted boundary around nodes that belong to VLAN 344. Similarly,VLAN 342 may display a differently colored boundary around nodes thatbelong to VLAN 344. The graphical user interface 128 may be configuredto allow the user to select and deselect filters in order to displaydifferent node relationships based on different configurationproperties. Additionally, the filters on the graphical user interface128 may be configured to display network relationships of nodes basedupon a specific OSI layer. For instance, the user may select a filterthat displays only OSI layer 3 node relationships, such as OSPF and/orBGP node groups. The OSI layer 3 filter may also hide relationshipsbetween nodes based on other OSI layers, such as hiding physicalconnection links between nodes (OSI layer 1).

Referring to FIG. 4, at block 405, processing logic may receive userinput from the client device 110 to update discovery parameters for adiscovery request. In an implementation, the discovery parameteridentification component 114 of application 112 may receive, from theclient device 120, user input specifying updates to existing discoveryparameters.

At block 407, processing logic may determine updated discoveryparameters from the received user input from the client device. In animplementation, the discovery parameter identification component 114 maydetermine the updated discovery parameters from the received user input.The updates may specifically define new parameters such as, a newstarting node, a new maximum hop count, and/or updated device types androles for discovered nodes. For example, a user may select a nodedisplayed in the graphical representation of the network for the purposeof designating the node as the new starting node. The user inputreceived from the client device 120 may include the newly selectedstarting node. In other examples, the user may specify, via thegraphical user interface 128 which types of devices and/or roles to beincluded in the updated discovery request.

In yet other examples, the received user input may specify changes tothe viewable area on the graphical user interface 128, which thediscovery parameter identification component 114 may then use todetermine updated discovery parameters. For instance, if the user of thegraphical user interface 128 pans the viewable area to the left, therebyshifting the locations of the displayed nodes, then the graphical userinterface 128 may send the user input to the application 112 specifyingthe number of pixels each node has shifted. The discovery parameteridentification component 114 may then determine based on the shiftinglocations of the nodes, which node is located closest to the center ofthe viewable area. The discovery parameter identification component 114may determine a third node based on which node is closest to the centerof the viewable area.

In an implementation the discovery parameter identification component114 may determine an updated maximum hop count based on the receiveduser input from the client device 120. For example, if the received userinput specifies that the user zoomed in, then discovery parameteridentification component 114 may decrease the maximum hop count as nodesin the viewable area in the graphical user interface 128 have becomebigger and less neighboring nodes would be visible. The interactive zoomcontrol may have a slider bar for changing the zoom. A slider bar valueassociated with the zoom amount may then be sent to the application 112specifying the amount of zoom. Based on the slider bar value of thezoom, the discovery parameter identification component 114 may adjustthe maximum hop count accordingly. For example, if the slider bar valueindicates the viewable area is fully zoomed in, then the discoveryparameter identification component 114 may set the maximum hop count toone, such that only directly connected neighbor nodes would be visible.In contrast, if the slider bar value indicates that the viewable area isfully zoomed out, then the discovery parameter identification component114 may set the maximum hop count to a higher number, such as 10. Themaximum value for the maximum hop count may be configured based upon thenumber of total nodes in the network, or some other configurable valuespecified by the application 112 or by a user such as a networkengineer.

Blocks 410-430 of method 400 are substantially similar to blocks 210-230of method 200. At block 410, processing logic identifies a node forretrieving network configuration information. In an implementation, thediscovery parameter identification component 114 may identify a firstnode from the updated discovery parameters determined at block 407.

In another implementation, the node management component 114 mayidentify the node for retrieving network configuration information frompreviously retrieved network configuration information of a previouslyidentified node. For instance, if at decision block 420 the nodemanagement component 116 determines that additional networkconfiguration information is to be retrieved from a neighboring node ofthe currently identified node, then the node management component 114may identify a node from the previously retrieved network configurationinformation.

At block 415, processing logic may retrieve network configurationinformation of a part of the network from the identified node. In animplementation, the node management component 114 may retrieve networkconfiguration information from the identified node by establishing aconnection to the node and executing one or more commands on the node toaccess the network configuration information.

In another implementation, the node management component 114 may accessthe data store 130 for network configuration information that may havebeen previously stored during a prior discovery of the node. Forexample, if network configuration information for node 314 waspreviously retrieved and stored in the data store 130, then the nodemanagement component 114 may access the data store 130 to retrieve theconfiguration information without having to reconnect to node 314 andexecute query commands to retrieve configuration information. Previouslystored network configuration information stored in the data store 130may be used if the data values are still valid. Data values forconfiguration information may change over time, for instance routinginformation, and therefore data stored within the data store 130 mayexpire after a certain period of time. If the data on the data store 130has expired then the node management component 114 may retrieve networkconfiguration information from the identified node.

At decision block 420, processing logic may determine whether theadditional nodes are to be discovered. In an implementation, if the nodemanagement component 116 determines that no additional nodes are to bediscovered, based upon updated discovery parameters and neighboringnodes determined from the retrieved network configuration informationfrom block 415, then the node management component 116 may proceed toblock 425 to identify subsets of discovered nodes that have commonnetwork configuration values. If at decision block 420 the nodemanagement component 116 determines that additional nodes are to bediscovered, then the node management component 116 proceeds to block 410to identify the next node for discovery.

At block 425, processing logic may identify a subset of nodes that haveone or more common network configuration values. In an implementation,the topology management component 118 may access the networkconfiguration information for each of the discovered nodes from the datastore 130 to determine relationships between nodes based on networkprotocols or enabled services.

At block 430, processing logic may generate an updated GUIrepresentation of the topology of the network that includes theplurality of discovered nodes and visual features representing thesubset of nodes that have one or more common network configurationvalues. In an implementation, the topology management component 118 maygenerate the updated GUI representation of the topology of the networkfor the discovered nodes including visual features identifying nodesthat belong to identified subsets determined at block 425.

In an implementation, the topology management component 118 maydetermine the level of detail to be displayed within the updated GUIrepresentation of the topology of the network based upon the zoom levelprovided in the user input received at block 402. For example, if thezoom level fully zoomed out, then the topology management component 118may, when displaying physical connections related to OSI layer 1, devicenames and device types for nodes. When the zoom level is partiallyzoomed in, then the topology management component 118 may display LLDPlinks and interface names for OSI layer 1. When the zoom level is fullyzoomed in, then the topology management component 118 may, for OSI layer1, display electrical, optical, and/or wireless link types for nodes,hardware part numbers, hardware status, and transmission modes fornodes.

Examples for OSI layer 2 displays may include displaying, when the zoomlevel is partially zoomed in, link layer protocols and which VLANs areenabled for links and interfaces for each node. When the zoom level isfully zoomed in, then the topology management component 118 may displayframe counters, frame counters per VLAN, and MAC table entries.

Examples for OSI layer 3 displays may include displaying, when the zoomlevel is fully zoomed out, BGP autonomous system numbers, OSPF areanumbers, and/or loopback IP addresses. When the zoom level is partiallyzoomed in, then the topology management component 118 may display BGPneighbor adjacency states, OSPF neighbor adjacency states, and interfaceIP addresses. When the zoom level is fully zoomed in, then the topologymanagement component 118 may display routing table entries, and accesslists for nodes.

Upon generating the updated graphical representation of the topology ofthe network, the application 112 may send the GUI representation of thenetwork topology to the client device 120 for display on the graphicaluser interface 128.

FIG. 13 depicts a block diagram of a computer system operating inaccordance with one or more aspects of the disclosure. In variousillustrative examples, computer system 500 may correspond to computingdevices, such as client device 120, management server 110, anddeployment server 130 of FIG. 1. The computer system may be includedwithin a data center that supports virtualization. Virtualization withina data center results in a physical system being virtualized using VMsto consolidate the data center infrastructure and increase operationalefficiencies. A VM may be a program-based emulation of computerhardware. For example, the VM may operate based on computer architectureand functions of computer hardware resources associated with hard disksor other such memory. The VM may emulate a physical computingenvironment, but requests for a hard disk or memory may be managed by avirtualization layer of a host machine to translate these requests tothe underlying physical computing hardware resources. This type ofvirtualization results in multiple VMs sharing physical resources.

In certain implementations, computer system 500 may be connected (e.g.,via a network, such as a Local Area Network (LAN), an intranet, anextranet, or the Internet) to other computer systems. Computer system500 may operate in the capacity of a server or a client computer in aclient-server environment, or as a peer computer in a peer-to-peer ordistributed network environment. Computer system 500 may be provided bya personal computer (PC), a tablet PC, a set-top box (STB), a PersonalDigital Assistant (PDA), a cellular telephone, a web appliance, aserver, a network router, switch or bridge, or any device capable ofexecuting a set of instructions (sequential or otherwise) that specifyactions to be taken by that device. Further, the term “computer” shallinclude any collection of computers that individually or jointly executea set (or multiple sets) of instructions to perform any one or more ofthe methods described herein.

In a further aspect, the computer system 500 may include a processingdevice 502, a volatile memory 504 (e.g., random access memory (RAM)), anon-volatile memory 506 (e.g., read-only memory (ROM) orelectrically-erasable programmable ROM (EEPROM)), and a data storagedevice 516, which may communicate with each other via a bus 508.

Processing device 502 may be provided by one or more processors such asa general purpose processor (such as, for example, a complex instructionset computing (CISC) microprocessor, a reduced instruction set computing(RISC) microprocessor, a very long instruction word (VLIW)microprocessor, a microprocessor implementing other types of instructionsets, or a microprocessor implementing a combination of types ofinstruction sets) or a specialized processor (such as, for example, anapplication specific integrated circuit (ASIC), a field programmablegate array (FPGA), a digital signal processor (DSP), or a networkprocessor).

Computer system 500 may further include a network interface device 522.Computer system 500 also may include a video display unit 510 (e.g., anLCD), an alphanumeric input device 512 (e.g., a keyboard), a cursorcontrol device 514 (e.g., a mouse), and a signal generation device 520.

Data storage device 516 may include a non-transitory computer-readablestorage medium 524 on which may store instructions 526 encoding any oneor more of the methods or functions described herein, includinginstructions for application 112 and client application 122 of FIG. 1for implementing methods 200, 400, 800, and 1000.

Instructions 526 may also reside, completely or partially, withinvolatile memory 504 and/or within processing device 502 during executionthereof by computer system 500, hence, volatile memory 504 andprocessing device 502 may also constitute machine-readable storagemedia.

While computer-readable storage medium 524 is shown in the illustrativeexamples as a single medium, the term “computer-readable storage medium”shall include a single medium or multiple media (e.g., a centralized ordistributed database, and/or associated caches and servers) that storethe one or more sets of executable instructions. The term“computer-readable storage medium” shall also include any tangiblemedium that is capable of storing or encoding a set of instructions forexecution by a computer that cause the computer to perform any one ormore of the methods described herein. The term “computer-readablestorage medium” shall include, but not be limited to, solid-statememories, optical media, and magnetic media.

The methods, components, and features described herein may beimplemented by discrete hardware components or may be integrated in thefunctionality of other hardware components such as ASICS, FPGAs, DSPs orsimilar devices. In addition, the methods, components, and features maybe implemented by firmware modules or functional circuitry withinhardware devices. Further, the methods, components, and features may beimplemented in any combination of hardware devices and computer programcomponents, or in computer programs.

Unless specifically stated otherwise, terms such as “receiving,”“associating,” “deleting,” “initiating,” “marking,” “generating,”“recovering,” “completing,” or the like, refer to actions and processesperformed or implemented by computer systems that manipulates andtransforms data represented as physical (electronic) quantities withinthe computer system registers and memories into other data similarlyrepresented as physical quantities within the computer system memoriesor registers or other such information storage, transmission or displaydevices. Also, the terms “first,” “second,” “third,” “fourth,” etc. asused herein are meant as labels to distinguish among different elementsand may not have an ordinal meaning according to their numericaldesignation.

Examples described herein also relate to an apparatus for performing themethods described herein. This apparatus may be specially constructedfor performing the methods described herein, or it may comprise ageneral purpose computer system selectively programmed by a computerprogram stored in the computer system. Such a computer program may bestored in a computer-readable tangible storage medium.

The methods and illustrative examples described herein are notinherently related to any particular computer or other apparatus.Various general purpose systems may be used in accordance with theteachings described herein, or it may prove convenient to construct morespecialized apparatus to perform methods 200 and 400 and/or each oftheir individual functions, routines, subroutines, or operations.Examples of the structure for a variety of these systems are set forthin the description above.

The above description is intended to be illustrative, and notrestrictive. Although the present disclosure has been described withreferences to specific illustrative examples and implementations, itwill be recognized that the present disclosure is not limited to theexamples and implementations described. The scope of the disclosureshould be determined with reference to the following claims, along withthe full scope of equivalents to which the claims are entitled.

Other computer system designs and configurations may also be suitable toimplement the systems and methods described herein. The followingexamples illustrate various implementations in accordance with one ormore aspects of the present disclosure.

Example 1 is a method comprising: receiving, by a processor, user inputrequesting a graphical user interface representation of a topology of anetwork, wherein the user input comprises a zoom level for displayinggraphical user interface representation; determining, from the userinput, discovery parameters for discovering configuration informationfor a plurality of nodes in the network, the discovery parameterscomprising a hop count determined in view of the zoom level, wherein thehop count is a maximum number of hops between a first node and adestination node of the plurality of nodes; retrieving, from the firstnode of the plurality of nodes specified by the discovery parameters, afirst network configuration information of a first part of the networkinterconnecting the first node to a first subset of the plurality ofnodes, wherein the first subset of the plurality of nodes has propertyvalues matching the discovery parameters; identifying a second node fromthe first subset of the plurality of nodes; retrieving, from the secondnode, a second network configuration information of a second part of thenetwork interconnecting the second node to a second subset of theplurality of nodes; and generating a graphical user interfacerepresentation of a topology of the network, wherein the graphical userinterface representation comprises the first node, the first subset ofthe plurality of nodes, and the second subset of the plurality of nodes.

Example 2 is the method of example 1, further comprising: identifyingamong the first node, the first subset of the plurality of nodes, andthe second subset of the plurality of nodes, a subset of nodes that havecommon network configuration values, wherein the graphical userinterface representation comprises a visual feature representing thecommon network configuration values of the subset of nodes.

Example 3 is the method of example 1, wherein the discovery parameterscomprise at least one of a device type of nodes to be discovered and afunction assigned to the nodes to be discovered.

Example 4 is the method of example 1, wherein retrieving the firstnetwork configuration information of the first part of the networkcomprises: sending a discovery request to the first node for the firstnetwork configuration information identifying connectivity between thefirst node and the first subset of the plurality of nodes; andreceiving, from the first node, the first network configurationinformation, wherein the first network configuration informationcomprises at least one of network addresses, communication endpointidentifiers for physical connections between the first node and thefirst subset of the plurality of nodes, and media access control address(MAC) identifiers for the first node and the first subset of theplurality of nodes.

Example 5 is the method of example 1, wherein retrieving the firstnetwork configuration information of the first part of the networkcomprises: sending a discovery request to the first node for the firstnetwork configuration information identifying configuration values forone or more enabled networking protocols for the first node; andreceiving, from the first node, the first network configurationinformation from one or more network configuration files on the firstnode that identify the configuration values for the one or more enablednetworking services for the first node.

Example 6 is the method of example 1, wherein retrieving the firstnetwork configuration information of the first part of the networkcomprises: sending a discovery request to the first node for the firstnetwork configuration information identifying one or more network routesbetween the first node and at least one of the plurality of nodes; andreceiving, from the first node, the first network configurationinformation from at least one of a routing table, routing informationbase, and a routing protocol database on the first node that describenetwork routes between the first node and at least one of the pluralityof nodes.

Example 7 is the method of example 1, further comprising: identifying athird node from the second subset of the plurality of nodes withproperty values matching the discovery parameters; retrieving, from thethird node, a third network configuration information of a third part ofthe network interconnecting the third node to a third subset of theplurality of nodes; and wherein generating the graphical user interfacerepresentation of the topology of the network comprises, generating thegraphical user interface representation that comprises the first node,the first subset of the plurality of nodes, the second subset of theplurality of nodes, and the third subset of the plurality of nodes.

Example 8 is the method of example 1, further comprising: sending thegraphical user interface representation of the topology of the networkto a client device to be displayed within a graphical user interface ofthe client device; receiving, from the client device, user inputspecifying a change in view of the graphical user interface displayingthe graphical user interface representation of the topology of thenetwork, wherein the change in view comprises at least one of a zoom,pan, or vertical shift; determining updated discovery parameters basedupon the user input from the client device; retrieving, from a thirdnode, an updated first network configuration information of an updatedfirst part of the network interconnecting the third node to a thirdsubset of the plurality of nodes; identifying a fourth node from thethird subset of the plurality of nodes with property values matching theupdated discovery parameters; retrieving, from the fourth node, anupdated second network configuration information of an updated secondpart of the network interconnecting the fourth node to a fourth subsetof the plurality of nodes; identifying among the third node, the thirdsubset of the plurality of nodes, and the fourth subset of the pluralityof nodes, an updated subset of nodes that have common networkconfiguration values; and generating an updated graphical user interfacerepresentation of the topology of the network, wherein the updatedgraphical user interface representation comprises the third node, thethird subset of the plurality of nodes, the fourth subset of theplurality of nodes, and a new visual feature representing the commonnetwork configuration values of the updated subset of nodes.

Example 9 is a system comprising: a memory; and a processor operativelycoupled to the memory, to: receive, user input requesting a graphicaluser interface representation of a topology of a network, wherein theuser input comprises a device type of nodes to be displayed within thegraphical user interface representation; determine, from the user input,discovery parameters for discovering configuration information of anetwork interconnecting a plurality of nodes in the network, thediscovery parameters comprising the device type of nodes to bedisplayed; retrieve, from a first node of the plurality of nodesspecified by the discovery parameters, a first network configurationinformation of a first part of the network interconnecting the firstnode to a first subset of the plurality of nodes, wherein the firstsubset of the plurality of nodes has property values matching thediscovery parameters; identify a second node from the first subset ofplurality of nodes; retrieve, from the second node, a second networkconfiguration information of a second part of the networkinterconnecting the second node to a second subset of the plurality ofnodes; and generate a graphical user interface representation of atopology of the network, wherein the graphical user interfacerepresentation comprises the first node, the first subset of theplurality of nodes, and the second subset of the plurality of nodes.

Example 10 is the system of example 9, wherein processor is further to:identify among the first node, the first subset of the plurality ofnodes, and the second subset of the plurality of nodes, a subset ofnodes that have common network configuration values, wherein thegraphical user interface representation comprises a visual featurerepresenting the common network configuration values of the subset ofnodes.

Example 11 is the system of example 9, wherein to retrieve the firstnetwork configuration information of the first part of the network, theprocessor is to: send a discovery request to the first node for thefirst network configuration information identifying connectivity betweenthe first node and the first subset of the plurality of nodes; andreceive, from the first node, the first network configurationinformation, wherein the first network configuration informationcomprises at least one of network addresses, communication endpointidentifiers for physical connections between the first node and thefirst subset of the plurality of nodes, and media access control address(MAC) identifiers for the first node and the first subset of theplurality of nodes.

Example 12 is the system of example 9, wherein to retrieve the firstnetwork configuration information of the first part of the network, theprocessor is to: send a discovery request to the first node for thefirst network configuration information identifying configuration valuesfor one or more enabled networking services for the first node; andreceive, from the first node, the first network configurationinformation from one or more network configuration files on the firstnode that identify the configuration values for the one or more enablednetworking services for the first node.

Example 13 is the system of example 9, wherein to retrieve the firstnetwork configuration information of the first part of the network, theprocessor is to: send a discovery request to the first node for thefirst network configuration information identifying one or more networkroutes between the first node and at least one of the plurality ofnodes; and receive, from the first node, the first network configurationinformation from at least one of a routing table, routing informationbase, and a routing protocol database on the first node that describenetwork routes between the first node and at least one of the pluralityof nodes.

Example 14 is the system of example 9, wherein the processor is furtherto: identify a third node from the second subset of the plurality ofnodes with property values matching the discovery parameters; retrieve,from the third node, a third network configuration information of athird part of the network interconnecting the third node to a thirdsubset of the plurality of nodes; and wherein to generate the graphicaluser interface representation of the topology of the network comprises,to generate the graphical user interface representation that comprisesthe first node, the first subset of the plurality of nodes, the secondsubset of the plurality of nodes, and the third subset of the pluralityof nodes.

Example 15 is the system of example 9, wherein the processor is furtherto: send the graphical user interface representation of the topology ofthe network to a client device to be displayed within a graphical userinterface of the client device; receiving, from the client device, userinput specifying a change in view of the graphical user interfacedisplaying the graphical user interface representation of the topologyof the network, wherein the change in view comprises at least one of azoom, pan, or vertical shift; determine updated discovery parametersbased upon the user input from the client device; retrieve, from a thirdnode, an updated first network configuration information of an updatedfirst part of the network interconnecting the third node to a thirdsubset of the plurality of nodes; identify a fourth node from the thirdsubset of the plurality of nodes with property values matching theupdated discovery parameters; retrieve, from the fourth node, an updatedsecond network configuration information of an updated second part ofthe network interconnecting the fourth node to a fourth subset of theplurality of nodes; identify among the third node, the third subset ofthe plurality of nodes, and the fourth subset of the plurality of nodes,an updated subset of nodes that have common network configurationvalues; and generate an updated graphical user interface representationof the topology of the network, wherein the updated graphical userinterface representation comprises the third node, the third subset ofthe plurality of nodes, the fourth subset of the plurality of nodes, anda new visual feature representing the common network configurationvalues of the updated subset of nodes.

Example 16 is a non-transitory computer readable storage medium, havinginstructions stored therein, which when executed by a processing deviceof a computer system, cause the processing device to: receive, userinput requesting a graphical user interface representation of a topologyof a network, wherein the user input comprises a device type of nodes tobe displayed within the graphical user interface representation;determine, from the user input, discovery parameters for discoveringconfiguration information of a network interconnecting a plurality ofnodes in the network, the discovery parameters comprising the devicetype of nodes to be displayed; retrieve, from a first node of theplurality of nodes specified by the discovery parameters, a firstnetwork configuration information of a first part of the networkinterconnecting the first node to a first subset of the plurality ofnodes, wherein the first subset of the plurality of nodes has propertyvalues matching the discovery parameters; identify a second node fromthe first subset of the plurality of nodes; retrieve, from the secondnode, a second network configuration information of a second part of thenetwork interconnecting the second node to a second subset of theplurality of nodes; and generate a graphical user interfacerepresentation of a topology of the network, wherein the graphical userinterface representation comprises the first node, the first subset ofthe plurality of nodes, and the second subset of the plurality of nodes.

Example 17 is the non-transitory computer readable storage medium ofexample 16, wherein the processing device is further to: identify amongthe first node, the first subset of the plurality of nodes, and thesecond subset of the plurality of nodes, a subset of nodes that havecommon network configuration values, wherein the graphical userinterface representation comprises a visual feature representing thecommon network configuration values of the subset of nodes.

Example 18 is the non-transitory computer readable storage medium ofexample 16, wherein to retrieve the first network configurationinformation of the first part of the network, the processing device isto: send a discovery request to the first node for the first networkconfiguration information identifying connectivity between the firstnode and the first subset of the plurality of nodes; and receive, fromthe first node, the first network configuration information, wherein thefirst network configuration information comprises at least one ofnetwork addresses, communication endpoint identifiers for physicalconnections between the first node and the first subset of the pluralityof nodes, and media access control address (MAC) identifiers for thefirst node and the first subset of the plurality of nodes.

Example 19 is the non-transitory computer readable storage medium ofexample 16, wherein to retrieve the first network configurationinformation of the first part of the network, the processing device isto: send a discovery request to the first node for the first networkconfiguration information identifying configuration values for one ormore enabled networking services for the first node; and receive, fromthe first node, the first network configuration information from one ormore network configuration files on the first node that identify theconfiguration values for the one or more enabled networking services forthe first node.

Example 20 is the non-transitory computer readable storage medium ofexample 16, wherein to retrieve the first network configurationinformation of the first part of the network, the processing device isto: send a discovery request to the first node for the first networkconfiguration information identifying one or more network routes betweenthe first node and at least one of the plurality of nodes; and receive,from the first node, the first network configuration information from atleast one of a routing table, routing information base, and a routingprotocol database on the first node that describe network routes betweenthe first node and at least one of the plurality of nodes.

What is claimed is:
 1. A method comprising: receiving, by a processor,user input requesting a graphical user interface representation of atopology of a network, wherein the user input comprises a zoom level fordisplaying the graphical user interface representation; determining,from the user input, discovery parameters for discovering configurationinformation for a plurality of nodes in the network, the discoveryparameters comprising a hop count determined in view of the zoom level,wherein the hop count is a maximum number of hops between a first nodeand a destination node of the plurality of nodes; retrieving, from thefirst node of the plurality of nodes specified by the discoveryparameters, a first network configuration information of a first part ofthe network interconnecting the first node to a first subset of theplurality of nodes, wherein the first subset of the plurality of nodeshas property values matching the discovery parameters; identifying asecond node from the first subset of the plurality of nodes; retrieving,from the second node, a second network configuration information of asecond part of the network interconnecting the second node to a secondsubset of the plurality of nodes; and generating a graphical userinterface representation of a topology of the network, wherein thegraphical user interface representation comprises the first node, thefirst subset of the plurality of nodes, and the second subset of theplurality of nodes.
 2. The method of claim 1, further comprising:identifying among the first node, the first subset of the plurality ofnodes, and the second subset of the plurality of nodes, a subset ofnodes that have common network configuration values, wherein thegraphical user interface representation comprises a visual featurerepresenting the common network configuration values of the subset ofnodes.
 3. The method of claim 1, wherein the discovery parameterscomprise at least one of a device type of nodes to be discovered and afunction assigned to the nodes to be discovered.
 4. The method of claim1, wherein retrieving the first network configuration information of thefirst part of the network comprises: sending a discovery request to thefirst node for the first network configuration information identifyingconnectivity between the first node and the first subset of theplurality of nodes; and receiving, from the first node, the firstnetwork configuration information, wherein the first networkconfiguration information comprises at least one of network addresses,communication endpoint identifiers for physical connections between thefirst node and the first subset of the plurality of nodes, and mediaaccess control address (MAC) identifiers for the first node and thefirst subset of the plurality of nodes.
 5. The method of claim 1,wherein retrieving the first network configuration information of thefirst part of the network comprises: sending a discovery request to thefirst node for the first network configuration information identifyingconfiguration values for one or more enabled networking protocols forthe first node; and receiving, from the first node, the first networkconfiguration information from one or more network configuration fileson the first node that identify the configuration values for the one ormore enabled networking services for the first node.
 6. The method ofclaim 1, wherein retrieving the first network configuration informationof the first part of the network comprises: sending a discovery requestto the first node for the first network configuration informationidentifying one or more network routes between the first node and atleast one of the plurality of nodes; and receiving, from the first node,the first network configuration information from at least one of arouting table, routing information base, and a routing protocol databaseon the first node that describe network routes between the first nodeand at least one of the plurality of nodes.
 7. The method of claim 1,further comprising: identifying a third node from the second subset ofthe plurality of nodes with property values matching the discoveryparameters; retrieving, from the third node, a third networkconfiguration information of a third part of the network interconnectingthe third node to a third subset of the plurality of nodes; and whereingenerating the graphical user interface representation of the topologyof the network comprises, generating the graphical user interfacerepresentation that comprises the first node, the first subset of theplurality of nodes, the second subset of the plurality of nodes, and thethird subset of the plurality of nodes.
 8. The method of claim 1,further comprising: sending the graphical user interface representationof the topology of the network to a client device to be displayed withina graphical user interface of the client device; receiving, from theclient device, user input specifying a change in view of the graphicaluser interface displaying the graphical user interface representation ofthe topology of the network, wherein the change in view comprises atleast one of a zoom, pan, or vertical shift; determining updateddiscovery parameters based upon the user input from the client device;retrieving, from a third node, an updated first network configurationinformation of an updated first part of the network interconnecting thethird node to a third subset of the plurality of nodes; identifying afourth node from the third subset of the plurality of nodes withproperty values matching the updated discovery parameters; retrieving,from the fourth node, an updated second network configurationinformation of an updated second part of the network interconnecting thefourth node to a fourth subset of the plurality of nodes; identifyingamong the third node, the third subset of the plurality of nodes, andthe fourth subset of the plurality of nodes, an updated subset of nodesthat have common network configuration values; and generating an updatedgraphical user interface representation of the topology of the network,wherein the updated graphical user interface representation comprisesthe third node, the third subset of the plurality of nodes, the fourthsubset of the plurality of nodes, and a new visual feature representingthe common network configuration values of the updated subset of nodes.9. A system comprising: a memory; and a processor operatively coupled tothe memory, to: receive, user input requesting a graphical userinterface representation of a topology of a network, wherein the userinput comprises a device type of nodes to be displayed within thegraphical user interface representation; determine, from the user input,discovery parameters for discovering configuration information of anetwork interconnecting a plurality of nodes in the network, thediscovery parameters comprising the device type of nodes to bedisplayed; retrieve, from a first node of the plurality of nodesspecified by the discovery parameters, a first network configurationinformation of a first part of the network interconnecting the firstnode to a first subset of the plurality of nodes, wherein the firstsubset of the plurality of nodes has property values matching thediscovery parameters; identify a second node from the first subset ofthe plurality of nodes; retrieve, from the second node, a second networkconfiguration information of a second part of the networkinterconnecting the second node to a second subset of the plurality ofnodes; and generate a graphical user interface representation of atopology of the network, wherein the graphical user interfacerepresentation comprises the first node, the first subset of theplurality of nodes, and the second subset of the plurality of nodes. 10.The system of claim 9, wherein processor is further to: identify amongthe first node, the first subset of the plurality of nodes, and thesecond subset of the plurality of nodes, a subset of nodes that havecommon network configuration values, wherein the graphical userinterface representation comprises a visual feature representing thecommon network configuration values of the subset of nodes.
 11. Thesystem of claim 9, wherein to retrieve the first network configurationinformation of the first part of the network, the processor is to: senda discovery request to the first node for the first networkconfiguration information identifying connectivity between the firstnode and the first subset of the plurality of nodes; and receive, fromthe first node, the first network configuration information, wherein thefirst network configuration information comprises at least one ofnetwork addresses, communication endpoint identifiers for physicalconnections between the first node and the first subset of the pluralityof nodes, and media access control address (MAC) identifiers for thefirst node and the first subset of the plurality of nodes.
 12. Thesystem of claim 9, wherein to retrieve the first network configurationinformation of the first part of the network, the processor is to: senda discovery request to the first node for the first networkconfiguration information identifying configuration values for one ormore enabled networking services for the first node; and receive, fromthe first node, the first network configuration information from one ormore network configuration files on the first node that identify theconfiguration values for the one or more enabled networking services forthe first node.
 13. The system of claim 9, wherein to retrieve the firstnetwork configuration information of the first part of the network, theprocessor is to: send a discovery request to the first node for thefirst network configuration information identifying one or more networkroutes between the first node and at least one of the plurality ofnodes; and receive, from the first node, the first network configurationinformation from at least one of a routing table, routing informationbase, and a routing protocol database on the first node that describenetwork routes between the first node and at least one of the pluralityof nodes.
 14. The system of claim 9, wherein the processor is furtherto: identify a third node from the second subset of the plurality ofnodes with property values matching the discovery parameters; retrieve,from the third node, a third network configuration information of athird part of the network interconnecting the third node to a thirdsubset of the plurality of nodes; and wherein to generate the graphicaluser interface representation of the topology of the network comprises,to generate the graphical user interface representation that comprisesthe first node, the first subset of the plurality of nodes, the secondsubset of the plurality of nodes, and the third subset of the pluralityof nodes.
 15. The system of claim 9, wherein the processor is furtherto: send the graphical user interface representation of the topology ofthe network to a client device to be displayed within a graphical userinterface of the client device; receiving, from the client device, userinput specifying a change in view of the graphical user interfacedisplaying the graphical user interface representation of the topologyof the network, wherein the change in view comprises at least one of azoom, pan, or vertical shift; determine updated discovery parametersbased upon the user input from the client device; retrieve, from a thirdnode, an updated first network configuration information of an updatedfirst part of the network interconnecting the third node to a thirdsubset of the plurality of nodes; identify a fourth node from the thirdsubset of the plurality of nodes with property values matching theupdated discovery parameters; retrieve, from the fourth node, an updatedsecond network configuration information of an updated second part ofthe network interconnecting the fourth node to a fourth subset of theplurality of nodes; identify among the third node, the third subset ofthe plurality of nodes, and the fourth subset of the plurality of nodes,an updated subset of nodes that have common network configurationvalues; and generate an updated graphical user interface representationof the topology of the network, wherein the updated graphical userinterface representation comprises the third node, the third subset ofthe plurality of nodes, the fourth subset of the plurality of nodes, anda new visual feature representing the common network configurationvalues of the updated subset of nodes.
 16. A non-transitory computerreadable storage medium, having instructions stored therein, which whenexecuted by a processing device of a computer system, cause theprocessing device to: receive, user input requesting a graphical userinterface representation of a topology of a network, wherein the userinput comprises a device type of nodes to be displayed within thegraphical user interface representation; determine, from the user input,discovery parameters for discovering configuration information of anetwork interconnecting a plurality of nodes in the network, thediscovery parameters comprising the device type of nodes to bedisplayed; retrieve, from a first node of the plurality of nodesspecified by the discovery parameters, a first network configurationinformation of a first part of the network interconnecting the firstnode to a first subset of the plurality of nodes, wherein the firstsubset of the plurality of nodes has property values matching thediscovery parameters; identify a second node from the first subset ofthe plurality of nodes; retrieve, from the second node, a second networkconfiguration information of a second part of the networkinterconnecting the second node to a second subset of the plurality ofnodes; and generate a graphical user interface representation of atopology of the network, wherein the graphical user interfacerepresentation comprises the first node, the first subset of theplurality of nodes, and the second subset of the plurality of nodes. 17.The non-transitory computer readable storage medium of claim 16, whereinthe processing device is further to: identify among the first node, thefirst subset of the plurality of nodes, and the second subset of theplurality of nodes, a subset of nodes that have common networkconfiguration values, wherein the graphical user interfacerepresentation comprises a visual feature representing the commonnetwork configuration values of the subset of nodes.
 18. Thenon-transitory computer readable storage medium of claim 16, wherein toretrieve the first network configuration information of the first partof the network, the processing device is to: send a discovery request tothe first node for the first network configuration informationidentifying connectivity between the first node and the first subset ofthe plurality of nodes; and receive, from the first node, the firstnetwork configuration information, wherein the first networkconfiguration information comprises at least one of network addresses,communication endpoint identifiers for physical connections between thefirst node and the first subset of the plurality of nodes, and mediaaccess control address (MAC) identifiers for the first node and thefirst subset of the plurality of nodes.
 19. The non-transitory computerreadable storage medium of claim 16, wherein to retrieve the firstnetwork configuration information of the first part of the network, theprocessing device is to: send a discovery request to the first node forthe first network configuration information identifying configurationvalues for one or more enabled networking services for the first node;and receive, from the first node, the first network configurationinformation from one or more network configuration files on the firstnode that identify the configuration values for the one or more enablednetworking services for the first node.
 20. The non-transitory computerreadable storage medium of claim 16, wherein to retrieve the firstnetwork configuration information of the first part of the network, theprocessing device is to: send a discovery request to the first node forthe first network configuration information identifying one or morenetwork routes between the first node and at least one of the pluralityof nodes; and receive, from the first node, the first networkconfiguration information from at least one of a routing table, routinginformation base, and a routing protocol database on the first node thatdescribe network routes between the first node and at least one of theplurality of nodes.